#include <stdio.h>
int main()
{
    char arr1[5][3] = {
        {11, 12, 13},
        {21, 22, 23},
        {31, 32, 33},
        {41, 42, 43},
        {51, 52, 53}};

    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            printf("%d-%u ", arr1[i][j], &arr1[i][j]);
        }
        printf("\n");
    }

    printf("====================\n");

    printf("%u %u %u %u\n", arr1, &arr1, &arr1[0], &arr1[0][0]);

    printf("%u\n", &arr1[0][0] + 1); // 1 首行首个元素的地址
    printf("%u\n", &arr1 + 1);       // 15 arr1整个数组的地址

    printf("%u\n", &arr1[0] + 1); // 3 arr1数字的首个元素 首行这个数字的地址
    printf("%u\n", arr1 + 1);     // 3 arr1表达式里面 是arr1数字的首个元素的 地址

    //&(表达式)步长? 看(表达式)是什么类型
    printf("%u\n", *(arr1 + 1) + 0);
    printf("%u\n", *(arr1 + 1) + 1);
    //  arr1 第一行的地址 步长是整行   (arr1 + 1)代表第二行的地址
    // *(arr1 + 1) 代表第二行这个数组   数组放在表达式就是这个数组的第一个元素的地址 步长为1

    // 尽可能获取 42元素的方法
}
